//
// Created by iris on 24-11-4.
//

#ifndef CGMODULE_H
#define CGMODULE_H

#include "AST/AST.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"

namespace codegen {

    using namespace ast;

    class CGModule {
        llvm::Module *M;

        // ASTBase *Mod;

    public:
        CGModule(llvm::Module *M) : M(M) {}

        llvm::LLVMContext &getLLVMCtx() {
            return M->getContext();
        }
        llvm::Module *getModule() { return M; }
        // ASTBase *getModuleDeclaration() { return Mod; }

        void run(std::vector<ASTBase*> *Mod);
    };
}
#endif //CGMODULE_H
